When a session or system process is running, a processor (e.g., a central processing unit or CPU) is also running at a higher rate (e.g., 100%), consuming significant power. If some processes go to sleep, then the processor can return back to low frequency and voltage states (e.g., P and C states), which saves significant power (e.g., 50-90%) on laptop, desktop and server computer systems. By monitoring what processes are waking up (and causing the processor to also return to full power mode) over a period of time, one can identify which processes are waking up most frequently and correct such problems as needed in order to reduce power consumption.
Typically, the kernel of an operating system (OS) only exports certain system activities in a file, such as /proc/interrupts for kernel interrupts and /proc/timer_stats for user space interrupts. When these files are read, new values are calculated and the values are returned to the user space as the number of wakeups associated with a process or kernel identifier (ID).
Unfortunately, the user space tracing has a measurable cost (in power and latency). It requires a user running at a root level (e.g., as a power user or administrator) to enable this tracing functionality, and then disable it when the user has finished monitoring the process wakeup activities. If more than one application enables and disables the logging, then one instance may prevent another instance from working correctly. While this may be acceptable on a single-user system with full root access, it is not suitable for a multi-user workstation.